package top.hmtools.services;

import java.util.List;

import org.springframework.stereotype.Service;

import top.hmtools.beans.MapperXmlSqlPartGroupBean;
import top.hmtools.beans.MapperXmlSqlPartTempletBean;
import top.hmtools.model.ResultModel;
import top.hmtools.model.ResultModel.resultStatus;

/**
 * mybatis mapper.xml配置文件 sql语句片段模板操作逻辑业务类
 * @author Jianghaibo
 *
 */
@Service
public class SqlPartManageService extends BaseService {

	/**
	 * 修改一条SQL语句片段分组信息
	 * @param bean
	 * @return
	 */
	public ResultModel updateSqlPartGroup(MapperXmlSqlPartGroupBean bean) {
		ResultModel result = new ResultModel(resultStatus.STATUS_FAIL);
		int count4CheckUnique = this.mapperXmlSqlPartGroupDao.getCount4CheckUnique(bean.getId(), bean.getName(), bean.getFactor_name());
		if(count4CheckUnique>0){
		    result.setMessage("片段分组名称或因子名称重复");
		    return result;
		}
		int count = this.mapperXmlSqlPartGroupDao.updateOne(bean);
		if(count>0){
			result.setStatusSuccess();
			result.setMessage("修改成功");
		}else{
			result.setMessage("修改失败");
		}
		return result;
	}

	/**
	 * 添加一条sql语句片段分组
	* 方法说明：                    addSqlPartGroup
	* 输入参数说明：           @param bean
	* 输入参数说明：           @return
	* 输出参数说明：           ResultModel
	*
	*
	 */
	public ResultModel addSqlPartGroup(MapperXmlSqlPartGroupBean bean) {
		ResultModel result = new ResultModel(resultStatus.STATUS_FAIL);
		int count4CheckUnique = this.mapperXmlSqlPartGroupDao.getCount4CheckUnique(bean.getId(), bean.getName(), bean.getFactor_name());
        if(count4CheckUnique>0){
            result.setMessage("片段分组名称或因子名称重复");
            return result;
        }
		int count = this.mapperXmlSqlPartGroupDao.addOne(bean);
		if(count>0){
			result.setStatusSuccess();
			result.setMessage("新增成功");
		}else{
			result.setMessage("新增失败");
		}
		return result;
	}

	/**
	 * 获取所有SQL片段分组信息
	 * @return
	 */
	public ResultModel getAllSqlPartGroup() {
		ResultModel result = new ResultModel(resultStatus.STATUS_FAIL);
		List<MapperXmlSqlPartGroupBean> allBeansDB = this.mapperXmlSqlPartGroupDao.getAll();
		if(allBeansDB != null && allBeansDB.size()>=0){
			result.setStatusSuccess();
			result.setRows(allBeansDB);
		}else{
			result.setMessage("获取数据失败");
		}
		return result;
	}

    /**
    * 方法说明：                   删除一条分组记录，根据组别id
    * <br>输入参数说明：           @param text
    * <br>输入参数说明：           @return
    * <br>输出参数说明：           ResultModel
    *
    **/
    public ResultModel delSqlPartGroupById(String id) {
        ResultModel result = new ResultModel(resultStatus.STATUS_FAIL);
        int count = this.mapperXmlSqlPartGroupDao.delOne(id);
        if(count>0){
            result.setStatusSuccess();
            result.setMessage("删除成功");
        }else{
            result.setMessage("删除失败");
        }
        return result;
    }

    /**
    * 方法说明：                   添加一条sql语句片段模板
    * <br>输入参数说明：           @param bean
    * <br>输出参数说明：           void
    *
    **/
    public ResultModel addSqlPartTemplet(MapperXmlSqlPartTempletBean bean) {
        ResultModel result = new ResultModel(resultStatus.STATUS_FAIL);
        int count4CheckUnique = this.mapperXmlSqlPartTempletDao.getCount4CheckUnique(bean.getId(),bean.getDb_type(),bean.getName(),bean.getFactor_name());
        if(count4CheckUnique>0){
            result.setMessage("片段分组名称或因子名称重复");
            return result;
        }
        int count = this.mapperXmlSqlPartTempletDao.addOne(bean);
        if(count>0){
            result.setStatusSuccess();
            result.setMessage("新增成功");
        }else{
            result.setMessage("新增失败");
        }
        return result;
    }

    /**
    * 方法说明：                    根据数据库类别获取所有其对应的sql语句片段
    * 输入参数说明：           @param typeCode
    * 输入参数说明：           @return
    * 输出参数说明：           List<MapperXmlSqlPartTempletBean>
    *
    **/
    public ResultModel<MapperXmlSqlPartTempletBean> getSqlPartTempletsByDataType(int typeCode) {
        ResultModel<MapperXmlSqlPartTempletBean> result = new ResultModel<MapperXmlSqlPartTempletBean>(resultStatus.STATUS_FAIL);
        List<MapperXmlSqlPartTempletBean> beans= this.mapperXmlSqlPartTempletDao.getSqlPartTempletsByDataType(typeCode);
        if(beans != null && beans.size()>=0){
            result.setStatusSuccess();
            result.setRows(beans);
            result.setMessage("获取数据成功");
        }else{
            result.setMessage("获取数据失败");
        }
        return result;
    }

    /**
    * 方法说明：                    修改一条sql语句片段模板
    * 输入参数说明：           @param bean
    * 输入参数说明：           @return
    * 输出参数说明：           ResultModel
    *
    **/
    public ResultModel updateSqlPartTemplet(MapperXmlSqlPartTempletBean bean) {
        ResultModel result = new ResultModel(resultStatus.STATUS_FAIL);
        int count4CheckUnique = this.mapperXmlSqlPartTempletDao.getCount4CheckUnique(bean.getId(),bean.getDb_type(),bean.getName(),bean.getFactor_name());
        if(count4CheckUnique>0){
            result.setMessage("片段分组名称或因子名称重复");
            return result;
        }
        int count = this.mapperXmlSqlPartTempletDao.updateOne(bean);
        if(count>0){
            result.setStatusSuccess();
            result.setMessage("修改数据成功");
        }else{
            result.setMessage("修改数据失败");
        }
        return result;
    }

    /**
    * 方法说明：                   删除一条sql语句片段模板
    * 输入参数说明：           @param id
    * 输入参数说明：           @return
    * 输出参数说明：           ResultModel
    *
    **/
	public ResultModel delSqlPartTempletById(String id) {
        ResultModel result = new ResultModel(resultStatus.STATUS_FAIL);
        int count = this.mapperXmlSqlPartTempletDao.delOne(id);
        if(count>0){
            result.setStatusSuccess();
            result.setMessage("修改数据成功");
        }else{
            result.setMessage("修改数据失败");
        }
        return result;
    }

    /**
     * 根据条件获取SQL语句模板信息集合
     * @param typeCode
     * @param groupId
     * @return
     */
	public ResultModel<MapperXmlSqlPartTempletBean> getSqlPartTempletsByCondition(int typeCode, String groupId) {
		ResultModel<MapperXmlSqlPartTempletBean> result = new ResultModel<MapperXmlSqlPartTempletBean>(resultStatus.STATUS_FAIL);
        List<MapperXmlSqlPartTempletBean> beans= this.mapperXmlSqlPartTempletDao.getSqlPartTempletsByCondition(typeCode,groupId);
        if(beans != null && beans.size()>=0){
            result.setStatusSuccess();
            result.setRows(beans);
            result.setMessage("获取数据成功");
        }else{
            result.setMessage("获取数据失败");
        }
        return result;
	}

}
